
var express = require('express')

var fs = require('fs')
var path = require('path')

// 创建一个子路由对象(用来管理一部分后端路由)
var userRouter = express.Router()


// 设置分页(查询)接口
userRouter.get('/list', (req, res) => {

    // 获取get类型请求的参数：req.query
    var { page, count } = req.query;

    // 读取 users.json 文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    // 分页
    var newarr = arr.slice((page - 1) * count, page * count);
    // 返回数据
    res.send({ code: 200, msg: '请求成功', list: newarr })
})

// 模糊搜索
userRouter.get('/search', (req, res) => {
    // 接收参数
    var { searchkey } = req.query;

    // 读取json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    // 正则查询
    var newarr = arr.filter((item) => {
        return new RegExp(searchkey).test(item.name)
    })

    // 返回数据
    res.send({ code: 200, msg: '查询成功！', list: newarr })
})

// 登录请求
userRouter.post('/login', (req, res) => {

    var { phone, pass } = req.body;
    // console.log(phone, path);



    // 读取json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    // 用来自客户端的数据 做判断，判断是否在服务器端的用户列表中
    var i = arr.findIndex((item, index) => {
        return item.phone == phone && item.pass == pass;
    })

    // 如果i不是-1，说明来自客户端的数据是合法的
    if (i != -1) {
        res.send({ code: 200, msg: '登陆成功！', userinfo: arr[i], token: '' })
    } else {
        res.send({ code: 200, msg: '登陆失败！' })
    }
})

// 注册请求
userRouter.post('/register', (req, res) => {
    // 获取注册相关参数
    var { phone } = req.body; //phone,pass,email,name

    // 读取users.json文件中的用户信息
    var filepath = path.join(__dirname, '../json/users.json');
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    // 判断新用户是否已存在
    var i = arr.findIndex((item) => {
        return item.phone == phone;
    })

    if (i != -1) { // 用户已存在，注册失败
        res.send({ code: 400, msg: '该手机号已注册，注册失败' })
    } else {
        // 添加该用户到users.json
        arr.push({ ...req.body, ingroup: '编辑组', isadmin: true, status: true })
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf-8')
        res.send({ code: 200, msg: '注册成功!' })
    }
})


// 删除
userRouter.post('/delete', (req, res) => {

    //获取手机号 参数
    var { phone } = req.body;

    // 读取users.json 文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json')
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    // 在arr中查找手机号对应的用户
    var i = arr.findIndex((item) => {
        return item.phone == phone;
    })

    if (i != -1) { // 条件成立，说明 找到了需要删除的用户 它在arr中的下标是 i 
        arr.splice(i, 1);
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf-8');

        // 分页
        var newarr = arr.slice(0, 2);

        // 返回删除后，第一页的新数据
        res.send({ code: 200, msg: '删除成功！', list: newarr })
    } else {
        res.send({ code: 400, msg: '删除失败！' })
    }
})


// 导出这个子路由对象
module.exports = userRouter;


